begin

/*
Некоторые команды, которые используеются внизу
^H - температура печати, ставить не ниже 10
^AD - означает термопечать, для термотрансферной ставить AT
^D1 - отрезка после каждой этикетки, если не нужна, то поставить 0
^E28 - положение в миллиметрах отрезчика относительно датчика положения бирки. 28 мм для бирки высотой 40 мм
*/

  select
      substring(S.NAME from 1 for 16) as SCLAD_KREDIT_NAME1,
      substring(S.NAME from 17 for 32) as SCLAD_KREDIT_NAME2,
      lpad(extract(day from D.DOC_DATE), 2, '0') || '.' || lpad(extract(month from D.DOC_DATE), 2, '0'),
      lpad(extract(day from DOR.DATE_OUT), 2, '0') || '.' || lpad(extract(month from DOR.DATE_OUT), 2, '0'),
      DOS.BARCODE_READ,
      DOS.BARCODE,
      D.DOC_NUM,
      C.NAME,
      substring(TT.NAME from 1 for 28) as TOVAR_LINE1,
      substring(TT.NAME from 29 for 56) as TOVAR_LINE2,
      aos100322.value_flt as WEIGHT,
      aos100321.value_bool as URGENCY,
      substring( aos100289.value_str from 1 for 28) as COMPLECT_LINE1,
      substring( aos100289.value_str from 29 for 56) as COMPLECT_LINE2,
      substring( aos100289.value_str from 57 for 84) as COMPLECT_LINE3,
      substring( aos100289.value_str from 85 for 112) as COMPLECT_LINE4,
      substring( aos100289.value_str from 113 for 140) as COMPLECT_LINE5,
      aos100332.value_bool as ironing,
      aos100346.value_bool as urgency_carpet3,
      aos100345.value_bool as urgency_carpet5,
      aos100329.value_bool as urgency_1day,
      aos100330.value_bool as manual_processing,
      aos100342.value_str as name_linen,
      aos100343.value_str as name_overall,
      aos100347.value_str as name_ironing

  from DOC_ORDER_SERVICES DOS
  left join DOCS_ORDER DOR on DOR.ID = DOS.DOC_ORDER_ID
  left join DOCS D on D.DOC_ID = DOR.DOC_ID
  left join TOVARS_TBL TT on TT.TOVAR_ID = DOS.TOVAR_ID
  left join CONTRAGENTS C on C.CONTR_ID = D.CONTRAGENT_ID
  left join SCLADS S on S.ID = DOR.SCLAD_KREDIT_ID
  left join addon_order_services aos100289 on aos100289.line_id = :DOS_ID and  aos100289.addon_type_id = 100289
  left join addon_order_services aos100322 on aos100322.line_id = :DOS_ID and  aos100322.addon_type_id = 100322
  left join addon_order_services aos100321 on aos100321.line_id = :DOS_ID and  aos100321.addon_type_id = 100321
  left join addon_order_services aos100332 on aos100332.line_id = :DOS_ID and  aos100332.addon_type_id = 100332
  left join addon_order_services aos100346 on aos100346.line_id = :DOS_ID and  aos100346.addon_type_id = 100346
  left join addon_order_services aos100345 on aos100345.line_id = :DOS_ID and  aos100345.addon_type_id = 100345
  left join addon_order_services aos100329 on aos100329.line_id = :DOS_ID and  aos100329.addon_type_id = 100329
  left join addon_order_services aos100330 on aos100330.line_id = :DOS_ID and  aos100330.addon_type_id = 100330
  left join addon_order_services aos100342 on aos100342.line_id = :DOS_ID and  aos100342.addon_type_id = 100342
  left join addon_order_services aos100343 on aos100343.line_id = :DOS_ID and  aos100343.addon_type_id = 100343
  left join addon_order_services aos100347 on aos100347.line_id = :DOS_ID and  aos100347.addon_type_id = 100347

  where DOS.ID = :DOS_ID
  into :SCLAD_KREDIT_NAME1,:SCLAD_KREDIT_NAME2, :DATE_BEG, :DATE_END, :BARCODE_READ, :BARCODE, :DOC_NUM, :CLIENT_NAME, :TOVAR_LINE1,
       :TOVAR_LINE2,:WEIGHT, :urgency,  :COMPLECT_LINE1,:COMPLECT_LINE2,:COMPLECT_LINE3,:COMPLECT_LINE4,:COMPLECT_LINE5, :ironing, :urgency_carpet3,
       :urgency_carpet5, :urgency_1day, :manual_processing, name_linen, name_overall, :name_ironing;

  EZPL_TEXT = '^Q75,0,0
^W38
^H10
^P1
^S2
^AD
^C1
^R8
~Q+8
^O0
^Db
^E30
~R255
^XSET,ROTATION,0
^L
Dy2-me-dd
Th:m:s
Dy2-me-dd
Th:m:s


BQ,19,157,2,6,48,0,0,' || :BARCODE || '
AB,0,218,1,1,0,0,' || :DOC_NUM || '
AB,0,287,1,1,0,0,Услуга:' || :TOVAR_LINE1 || '
AB,0,313,1,1,0,0,' || :TOVAR_LINE2 || '
AD,55,5,1,1,0,0,' || :SCLAD_KREDIT_NAME1 || '
AD,55,43,1,1,0,0,  ' || :SCLAD_KREDIT_NAME2 || '
AD,8,78,1,1,0,0,' || :DATE_BEG || '
AD,191,76,1,1,0,0,' || :DATE_END || '
AD,56,112,1,1,0,0,' || :BARCODE_READ;
if (coalesce(WEIGHT,0)<>0) then
EZPL_TEXT = EZPL_TEXT ||'
AB,0,356,1,1,0,0,Вес:'  || :WEIGHT;
if  ( coalesce(URGENCY,0)<>0 )  then
EZPL_TEXT = EZPL_TEXT ||  '
AD,2,394,1,1,0,0,Срочность до 3х дней';

--Только глажение
if  ( coalesce(ironing,0)<>0 )  then
EZPL_TEXT = EZPL_TEXT ||  '
AD,2,433,1,1,0,0,Только глажение';

/*срочность для ковров*/
if  ( coalesce(urgency_carpet3,0)<>0 )  then
EZPL_TEXT = EZPL_TEXT ||  '
AD,2,394,1,1,0,0,Срочный 3 дня';
if  ( coalesce(urgency_carpet5,0)<>0 )  then
EZPL_TEXT = EZPL_TEXT ||  '
AD,2,394,1,1,0,0,Срочный 5 дней';

--Срочность 1 сутки(+100%)
if  ( coalesce(urgency_1day,0)<>0 )  then
EZPL_TEXT = EZPL_TEXT ||  '
AD,2,394,1,1,0,0,Срочность 1 сутки';

--Ручная обработка
if  ( coalesce(manual_processing,0)<>0 )  then
EZPL_TEXT = EZPL_TEXT ||  '
AD,2,459,1,1,0,0,Ручная обработка';

--Наименование белья
if (coalesce(name_linen,'')<>'')then
EZPL_TEXT = EZPL_TEXT ||  '
AD,2,459,1,1,0,0,' || :name_linen;

--Наименование спецодежды
if (coalesce(name_overall,'')<>'')then
EZPL_TEXT = EZPL_TEXT ||  '
AD,2,459,1,1,0,0,' || :name_overall;

if (coalesce(name_ironing,'')<>'')then
EZPL_TEXT = EZPL_TEXT ||  '
AD,2,459,1,1,0,0,' || :name_ironing;

if (coalesce(COMPLECT_LINE1,'')<>'') then
EZPL_TEXT = EZPL_TEXT || '
AB,0,485,1,1,0,0,' || :COMPLECT_LINE1 || '
AB,0,511,1,1,0,0,' || :COMPLECT_LINE2 || '
AB,0,537,1,1,0,0,' || :COMPLECT_LINE3 || '
AB,0,560,1,1,0,0,' || :COMPLECT_LINE4 || '
AB,0,598,1,1,0,0,' || :COMPLECT_LINE5;

EZPL_TEXT = EZPL_TEXT || '
AB,0,254,1,1,0,0,' || :CLIENT_NAME || '
E
';

  suspend;
end